<?php

namespace App\Http\Controllers;
use Mail;
use Illuminate\Http\Request;
use DB;
use Hash;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Gregwar\Captcha\CaptchaBuilder;
use Session;
class LoginController extends Controller
{
   /*
        加载登录页面

   */
    public function getIndex(){
        return view('login.login');
    }
    /*
        执行登录
    */
    public function postDologin(Request $request){
       //查询用户是否存在
    $user = DB::table('user')->where('username','=',$request->input('username'))->first();
    // dd($user);
    if(count($user)){//用户名存在
        // dd(Hash::check($request->input['pass'],$user['pass']));
        if(Hash::check($request->input('pass'),$user['pass'])){
            //将用户信息写入session保存 目的是为了中间件检测通过
            session(['adminuser'=>$user]);
            // dd(session(['adminuser'=>$user]));
            return redirect('/admin')->with('success','登录成功');
            }else{
              return   back()->with('error','密码不正确');
            }
        }else{
            return back()->with('error','用户名不存在');
        }
    }

    //执行退出
    public function getOutlogin(){
        //销毁session中的用户信息
        session()->forget('adminuser');
        return redirect('/admin');
    }
    /*
    前台用户注册
     /home/register

    */
    public function register(){
        return view('home.register');
    }

    /*
        生成验证码

    */
      public function vcode()
    {
       
            //ob_clean();//清除缓存
                //生成验证码图片的Builder对象，配置相应属性
        $builder = new CaptchaBuilder;
        //可以设置图片宽高及字体
        $builder->build($width = 100, $height = 40, $font = null);
        //获取验证码的内容
        $phrase = $builder->getPhrase();

        //把内容存入session
        // Session::flash('milkcaptcha', $phrase);
        session(['milkcaptcha'=>$phrase]);
        //生成图片
        // header("Cache-Control: no-cache, must-revalidate");
        // header('Content-Type: image/jpeg');
        // $builder->output();
        return response($builder->output())->header('Content-Type','image/jpeg');
    }

    public function getPhrase(){
        if(session('milkcaptcha')==$_GET['phrase']){
            return 'yes';
        }else{
            return 'no';
        }
    }
    /*
        执行注册
        /register


    */
//     public function doregister(Request $request){
//         //1.创建请求对象,对当前表单提交
//         //2.验证码是否一至
//          // dd($request->all());
//       // echo   $request->input('pstring').'----'.session('milkcaptcha');
//         if($request->input('pass')==$request->input('lrpass')){
//             if($request->input('zc')=='on'){
//                 if($request->input('pstring')==session('milkcaptcha')){
//                     $data['username']=$request->input('username');
//                     $data['email'] = $request->input('email');
//                     $data['pass'] = Hash::make($request->input('pass'));
//                     $data['status'] = 1; //1.未激活  2.激活
//                     $data['token'] = str_random(50);
//                     //执行注册
//                     $res = DB::table('member')->insert($data);
//                     if($res){
//                         //发送邮件完成激活操作--status 字段改成2
//                         echo  'noey';
//                     }
//             }else{
//                 return back()->with('error','验证码错误');
//             }
//         }else{
//             return back()->with('error','你没有同意《钻石小鸟用户服务协议》');
//         }
//     }else{
//         return back()->with('error','两次密码不一致');
//     }
// }

 public function doregister(Request $request){
        //1.验证前台数据
    // dd($request->all());
    // dd($request->input('pstring').'----'.session('milkcaptcha'));
     if($request->input('pstring')==session('milkcaptcha')){
        // echo 'bb';
        // dd($request->input('zc'));
       // var_dump(($request->input('zc')=='on'));
        if($request->input('zc')=='on'){

            // echo 'aa';
            // dd($request->input('zc')=='on');
        $this -> validate($request,[
            'pass'=>'required',
            'lrpass'=>'required|same:pass',
            'phone'=>'required',
            'email'=>'required|email',
            ],[
                'lrpass.required'=>     '重复密码不能为空',
                'lrpass.same'=>'两次密码不一致',
                'pass.required'=>'密码不能为空',
                'phone.required'=>'电话不能为空',
                'email.email'=>'邮箱格式不正确',
                'email.required'=>'邮箱不能为空',
            ]);
        // dd('bbb');
       
        // dd('aaaa');
        //2.过滤字段
        $data = $request ->  except(['_token','lrpass','zc','pstring']);
        // dd($data);
        // //查询帐号中是否相同
        $sta = DB::table('member')->where('email',$request->input('email'))->orwhere('phone',$request->input('phone'))->get();
        // dd(count($sta));
        if(count($sta)==0){
        // dd($sta);

        //3.Hash加密密码
        $data['pass']=Hash::make($data['pass']);
        //写入添加默认token
       $data['token']=str_random(50); //laravel 定义函数随机生成50位的字符串
       $data['username'] = str_random(6);
       //添加默认状态
       $data['status']=1;//1.未激活 2.激活
        //4.完成数据插入
      $res = DB::table('member')->insert($data);

            //5.判断结果
            if($res){
                //  发送邮件完成激活操作--status 字段改成2
                // 使用 liuxianliang94@163.com 给liuxianliang94@126.com
                // Mail::raw('请激活当前账号',function($message) use($request){
                //     //设置邮件标题
                //     $message->subject('请激活邮件');
                //     // dd($request->input('email'));
                //     //设置邮件发送地址
                //     $message->to($request->input('email'));
                // });
                $this -> sendMail($request->input('email'));
               return redirect('/home/register')->with('success','注册成功请登陆邮箱激活');
            }else{
                        //将报错信息 通过with写入session中 目的是为了在模板中输出session中的报错信息
                return back()->withInput()->with('error','注册失败');
            }
        }else{
             return back()->withInput()->with('error','邮箱或电话已存在');   
        }
        }else{
            return back()->withInput()->with('error','你没有同意《钻石小鸟用户服务协议》');  
        }
    }else{
        return back()->withInput()->with('error','验证码错误');
    }
}

    public function sendMail($email){
        //发送内容就是email中的jihuo模板
        Mail::send('email.jihuo',['a'=>'a'],function($message) use($email){
            //to 给那个邮箱发送邮件 subject设置发送邮箱的标题
            $message->to($email)->subject('激活邮件');
        });
    }
}